package com.wdcloud.netlibrary.request;

import com.wdcloud.netlibrary.dispatcher.IDispatcher;

import java.util.List;
import java.util.Map;


/**
 */

public interface IRequestBuild {

    /**
     * 添加请求头信息，重复添加会覆盖之前的信息
     *
     * @param key
     * @param value
     */
    IRequestBuild header(String key, String value);

    /**
     * 添加请求头信息，重复添加会叠加，不会覆盖
     *
     * @param key
     * @param value
     */
    IRequestBuild addHeader(String key, String value);

    /**
     * 添加参数
     *
     * @param key
     * @param value
     * @return
     */
    IRequestBuild param(String key, String value);


    /**
     * 添加参数
     *
     * @param params
     * @return
     */
    IRequestBuild params(Map<String, String> params);

    /**
     * 设置路径
     *
     * @param url
     * @return
     */
    IRequestBuild url(String url);

    /**
     * 设置tag
     *
     * @param tag
     * @return
     */
    IRequestBuild tag(Object tag);

    /**
     * 添加文件
     *
     * @param mapper
     */
    IRequestBuild addFile(Mapper<String, String, String> mapper);


    /**
     * 添加多个文件
     *
     * @param mapper
     */
    IRequestBuild addFile(List<Mapper<String, String, String>> mapper);

    /**
     * 下载文件目录
     *
     * @param dir
     * @return
     */
    IRequestBuild dir(String dir);

    /**
     * 下载文件名称
     *
     * @param fileName
     * @return
     */
    IRequestBuild fileName(String fileName);


    /**
     * 请求体为一段json
     *
     * @param json
     * @return
     */
    IRequestBuild json(String json);


    /**
     * 请求体为一段byte
     *
     * @param bytes
     * @return
     */
    IRequestBuild byteContent(byte[] bytes);


    /**
     * @return
     */
    IDispatcher buildEvent();

}
